package Polynoms;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Font;
public class GUI {
JFrame frame;
private JTextField polyOneField;
private JTextField polyTwoField;
private JTextField resultField;
private String polyOneString;
private String polyTwoString;
private int[] polyOneInt = new int[100];
private int[] polyTwoInt = new int[100];
private int marker = 0;
Operations o = new Operations();
private JButton btnSubmit;
private JButton btnAdd;
private JButton btnSubtract;
private JButton btnMultiply;
private JButton btnDerivate;
private JButton btnIntegrate;
public GUI() {
initialize();
}
private void initialize() {
frame = new JFrame();
frame.setSize(640,480);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
polyOneField = new JTextField();
polyOneField.setBounds(160, 136, 391, 38);
frame.getContentPane().add(polyOneField);
polyTwoField = new JTextField();
polyTwoField.setBounds(160, 210, 391, 38);
frame.getContentPane().add(polyTwoField);
resultField = new JTextField();
resultField.setBounds(160, 287, 391, 38);
frame.getContentPane().add(resultField);
btnSubmit = new JButton("SUBMIT");
btnSubmit.setBounds(269, 352, 117, 29);
frame.getContentPane().add(btnSubmit);
btnAdd = new JButton("ADD");
btnAdd.setBounds(6, 409, 117, 29);
frame.getContentPane().add(btnAdd);
JLabel lblFirst = new JLabel("First polynom:");
lblFirst.setBounds(54, 147, 107, 16);
frame.getContentPane().add(lblFirst);
JLabel lblSecond = new JLabel("Second polynom:");
lblSecond.setBounds(35, 221, 126, 16);
frame.getContentPane().add(lblSecond);
JLabel lblResult = new JLabel("Result:");
lblResult.setBounds(94, 298, 50, 16);
frame.getContentPane().add(lblResult);
btnSubtract = new JButton("SUBTRACT");
btnSubtract.setBounds(124, 409, 117, 29);
frame.getContentPane().add(btnSubtract);
btnMultiply = new JButton("MULTIPLY");
btnMultiply.setBounds(250, 409, 117, 29);
frame.getContentPane().add(btnMultiply);
btnDerivate = new JButton("DERIVATE");
btnDerivate.setBounds(379, 409, 126, 29);
frame.getContentPane().add(btnDerivate);
btnIntegrate = new JButton("INTEGRATE");
btnIntegrate.setBounds(517, 409, 117, 29);
frame.getContentPane().add(btnIntegrate);
JLabel note1 = new JLabel("*The coefficients must be entered in the polynom fields, starting from the highest power to the lowest");
note1.setFont(new Font("Lucida Grande", Font.PLAIN, 12));
note1.setBounds(6, 36, 628, 46);
frame.getContentPane().add(note1);
JLabel note2 = new JLabel("*The coefficients must be separated with spaces");
note2.setFont(new Font("Lucida Grande", Font.PLAIN, 12));
note2.setBounds(6, 56, 628, 46);
frame.getContentPane().add(note2);
//BUTTON EVENTS:
btnSubmit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
polyOneString = polyOneField.getText();
polyTwoString = polyTwoField.getText();
try{
polyOneInt = readPol(polyOneString);
marker = 1;
resultField.setText("SUCCESS! Data submitted. Select the desired operation.");
}catch(NumberFormatException err){
marker=0;
resultField.setText("ERROR! Invalid input data!");
}
try{
polyTwoInt = readPol(polyTwoString);
marker = 1;
resultField.setText("SUCCESS! Data submitted. Select the desired operation.");
}catch(NumberFormatException err){
marker=0;
resultField.setText("ERROR! Invalid input data!");
}
}
});
btnAdd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
int maxSize;
if(marker == 1){
if(polyOneInt.length < polyTwoInt.length){
maxSize = polyTwoInt.length;
}
else {
maxSize = polyOneInt.length;
}
int resultInt[] = new int[maxSize];
resultInt = o.addP(polyOneInt, polyTwoInt);
String temp = new String();
for(int i = maxSize-1; i >= 0; i--){
temp = temp + " " + Integer.toString(resultInt[i]) + "X^" + i + " ";
if(i > 0){
temp = temp + " +";
}
}
resultField.setText(temp);
}else{
resultField.setText("ERROR! A valid polynom must be submitted!");
}
}
});
btnSubtract.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event){
int maxSize;
if(marker == 1){
if(polyOneInt.length < polyTwoInt.length){
maxSize = polyTwoInt.length;
}
else {
maxSize = polyOneInt.length;
}
int resultInt[] = new int[maxSize];
resultInt = o.subP(polyOneInt, polyTwoInt);
String temp = new String();
for(int i = maxSize-1; i >= 0; i--){
temp = temp + " " + Integer.toString(resultInt[i]) + "X^" + i + " ";
if(i > 0){
temp = temp + " +";
}
}
resultField.setText(temp);
}else{
resultField.setText("ERROR! A valid polynom must be submitted!");
}
}
});
btnMultiply.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
int size = polyOneInt.length + polyTwoInt.length;
int resultInt[] = new int[size];
if(marker==1){
resultInt = o.mulP(polyOneInt, polyTwoInt);
String temp = new String();
for(int i = size-2; i >= 0; i--){
temp = temp + " " + Integer.toString(resultInt[i]) + "X^" + i + " ";
if(i > 0){
temp = temp + " +";
}
}
resultField.setText(temp);
}else{
resultField.setText("ERROR! A valid polynom must be submitted!");
}
}
});
btnDerivate.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
int size = polyOneInt.length - 1;
int resultInt[] = new int[size];
if(marker==1){
resultInt = o.derP(polyOneInt);
String temp = new String();
for(int i = size-1; i >=0; i--){
temp = temp + " " + Integer.toString(resultInt[i]) + "X^" + i + " ";
if(i > 0){
temp = temp + " +";
}
}
resultField.setText(temp);
}else{
resultField.setText("ERROR! A valid polynom must be submitted!");
}
}
});
btnIntegrate.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
int size = polyOneInt.length + 1;
double[] tempPoly=new double[100];
double resultInt[] = new double[size];
for(int j = 0;j<polyOneInt.length;j++){
tempPoly[j]=polyOneInt[j];
}
if(marker==1){
resultInt = o.intgP(tempPoly);
String temp = new String();
for(int i = size-1; i >= 1; i--){
temp = temp + " " + Double.toString(resultInt[i]) + "X^" + i + " ";
if(resultInt[i] >= 0){
temp = temp + " +";
}
}
temp = temp + " Constant";
resultField.setText(temp);
}else{
resultField.setText("ERROR! A valid polynom must be submitted!");
}
}
});
}
public int[] readPol(String s){
String[] parts = s.split(" ");
int result[] = new int[parts.length];
for(int i = parts.length-1; i >= 0; i--){
result[i] = Integer.parseInt(parts[(parts.length-1)-i]);
}
return result;
}
}